package com.estate.common.core.domain.model.contact;

// ContactResp.java - 联系人数据模型

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;

@Data
@EqualsAndHashCode(callSuper = false)
@JsonIgnoreProperties(ignoreUnknown = true)
public class ContactResp {
    private Integer id;
    @JsonProperty("first_name")
    private String firstName;
    @JsonProperty("last_name")
    private String lastName;
    private String email;
    private String title;
    @JsonProperty("is_active")
    private Boolean isActive;
    @JsonProperty("is_company")
    private Boolean isCompany;
    @JsonProperty("last_modified")
    private String lastModified;
    private Addr address;
    private Phone phone;
    @JsonProperty("company_contact_id")
    private String companyContactId;
    @JsonProperty("company_position")
    private String companyPosition;
    @JsonProperty("communicate_via")
    private CommunicateVia communicateVia;
    private String source;
    private List<String> types;
    private List<Agent> agents;
    private List<Criteria> criteria;
    private List<Subscription> subscriptions;

}

@Data
@EqualsAndHashCode(callSuper = false)
@JsonIgnoreProperties(ignoreUnknown = true)
class Company {
    private String abn;
    private String name;
}

@Data
@EqualsAndHashCode(callSuper = false)
@JsonIgnoreProperties(ignoreUnknown = true)
class PriceRange {
    private Integer from;
    private Integer to;
}

@Data
@EqualsAndHashCode(callSuper = false)
@JsonIgnoreProperties(ignoreUnknown = true)
class Range {
    private Integer from;
    private Integer to;
}

@Data
@EqualsAndHashCode(callSuper = false)
@JsonIgnoreProperties(ignoreUnknown = true)
class AreaRange {
    private Integer from;
    private Integer to;
    private String unit;

}

@Data
@EqualsAndHashCode(callSuper = false)
@JsonIgnoreProperties(ignoreUnknown = true)
class Suburb {
    private String name;
    private String postcode;

}

@Data
@EqualsAndHashCode(callSuper = false)
@JsonIgnoreProperties(ignoreUnknown = true)
class PropertyType {
    private Integer id;
    private String type;

}

@Data
@EqualsAndHashCode(callSuper = false)
@JsonIgnoreProperties(ignoreUnknown = true)
class Subscription {
    private String created;
    private Integer id;

}

